package analiseSemantica;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;



public class Simbolo {

private String identicador; // lexema do identificador
private int cat;

//1 - variaveis
//2 - funcoes
//3 - variaveis dentro de lista de parametro
//4 - variaveis dentro de lista de parametros que sao vetores
//5 = vetor


private int tipo;        

private int escopo;
private int numParametro = 0;
private int numArgumentos = 0;
public LinkedList<Simbolo> parametrosFuncao=null;
//private int type;
//1 int
//2 char
//private int tamanhoVetor = -1;
public String stipo;



 

	public Simbolo(int tipo, String identicador, int cat, int escopo, int type){
		this.identicador = identicador;
        this.cat = cat;
        this.tipo = tipo;
        this.escopo = escopo;
      //  this.type = type;
	}


	public Simbolo(int tipo, String identicador, int cat,  int escopo) {
		this.parametrosFuncao = new LinkedList<Simbolo>();
        this.identicador = identicador;
        this.cat = cat;
        this.tipo = tipo;
        this.escopo = escopo;
        if(tipo == 1 && cat == 5)
        	stipo = "VETINT";
        if(tipo == 1 && cat != 5 )
        	stipo = "INT";
        
        if(tipo ==2 && cat ==5)
        	stipo = "VETCHAR";
        
        if(tipo ==2 && cat !=5)
        	stipo ="CHAR";
    }
    

	//public int getType() {
		//return type;
	//}

	public void setType(int type) {
		//	this.type = type;
	}


    public int getEscopo() {
        return escopo;
    }

    public void setEscopo(int escopo) {
        this.escopo = escopo;
    }

    public String getIdenticador() {
        return identicador;
    }

    public void setIdenticador(String identicador) {
        this.identicador = identicador;
    }

    public int getTipo() {
        return tipo;
    }

    public void setTipo(int tipo) {
        this.tipo = tipo;
    }

    public int getValor() {
        return cat;
    }

    public void setValor(int cat) {
        this.cat = cat;
    }

    public int getCat() {
        return cat;
    }

    public void setCat(int cat) {
        this.cat = cat;
    }

    public int getNumParametro() {
        return numParametro;
    }

    public void setNumParametro(int numParametro) {
        this.numParametro = numParametro;
    }

    public int getNumArgumentos() {
        return numArgumentos;
    }

    public void setNumArgumentos(int numArgumentos) {
        this.numArgumentos = numArgumentos;
    }


	public String getStipo() {
		return stipo;
	}


	public void setStipo(String stipo) {
		this.stipo = stipo;
	}


	public LinkedList<Simbolo> getParametrosFuncao() {
		return parametrosFuncao;
	}


	public void setParametrosFuncao(LinkedList<Simbolo> parametrosFuncao) {
		this.parametrosFuncao = parametrosFuncao;
	}
	
	public void insereParametro(Simbolo parametro){
		this.parametrosFuncao.add(parametro);
		
	}
	
	public String toString(){
		StringBuffer string = new StringBuffer();
		Iterator it = parametrosFuncao.iterator();
		while(it.hasNext()){
			string.append(it.next());
			string.append("\n");
		}
		return string.toString();
		
	}


	





}
